import type { VNode } from "vue";
import type { LocalVersionItem } from "@/modules/dev-env/common/types.ts";
import type { DefaultOptionType } from "ant-design-vue/es/vc-select/Select";

/**
 * 环境变量配置
 */
export interface EnvVariableConfig {
  /**
   * 变量名称
   */
  name: string;
  /**
   * 返回变量值
   */
  getValue?: () => string | Promise<string>;

  /**
   * 变量只读
   */
  readonly?: boolean;
  /**
   * 变量帮助说明
   */
  help?: string;
  /**
   * 显示系统当前值
   */
  showCurrent?: boolean;
  /**
   * 可直接设置为系统环境变量
   */
  settable?: boolean;
  /**
   * 复制变量名
   * @default true
   */
  copyName?: boolean;

  /**
   * 变量值待选项
   */
  options?: DefaultOptionType[];
}

/**
 * 页面配置
 */
export interface PageConfig {
  /**
   * 显示设置区域
   */
  showSetting?: boolean;
  /**
   * 设置current符号链接功能
   */
  showCurrentAction?: boolean;
}

/**
 * 表格功能扩展
 */
export interface EnvTableAction {
  key: string;
  /**
   * 图标
   */
  icon: string | VNode;
  /**
   * 功能名称
   */
  name: string;
  /**
   * 点击回调
   * @param version
   */
  onClick: (version: LocalVersionItem) => void;
  /**
   * 禁用菜单
   */
  disabled?: boolean;
}
